/*

 Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).

 You may assume that the intervals were initially sorted according to their start times.

 Example 1:
 Given intervals [1,3],[6,9], insert and merge [2,5] in as [1,5],[6,9].

 Example 2:
 Given [1,2],[3,5],[6,7],[8,10],[12,16], insert and merge [4,9] in as [1,2],[3,10],[12,16].

 This is because the new interval [4,9] overlaps with [3,5],[6,7],[8,10].
 */


function Interval(start, end) {
    this.start = start;
    this.end = end;
}
/**
 * @param {Interval[]} intervals
 * @param {Interval} newInterval
 * @return {Interval[]}
 */
let insert = function (intervals, newInterval) {
    let l = 0;
    let r = 0;
    if(intervals.length == 0){
        return [newInterval];
    }
    for (var i = 0; i < intervals.length; i++) {
        let itv = intervals[i];
        if (newInterval.start < itv.start) {
            l = newInterval.start;
            if(newInterval.end < itv.start){
                r = newInterval.end;
            }
            break;
        } else if (newInterval.start >= itv.start && newInterval.start <= itv.end) {
            l = itv.start;
            break;
        }
    }
    let startIndex = i;
    for (i = intervals.length - 1; i >= 0; i--) {
        let itv = intervals[i];
        if (newInterval.end > itv.end) {
            r = newInterval.end;
            if(newInterval.start > itv.end){
                l = newInterval.start;
            }
            break;
        } else if (newInterval.end >= itv.start && newInterval.end <= itv.end) {
            r = itv.end;
            break;
        }
    }
    let endIndex = i;
    intervals.splice(startIndex, endIndex - startIndex + 1, new Interval(l,r));
    return intervals;
};


let createIntervals = function(arrs){
    let result = [];
    for(let i = 0; i < arrs.length; i++){
        result.push(createInterval(arrs[i]));
    }
    return result;
}

let createInterval = function(arr){
    return new Interval(arr[0],arr[1]);
}
console.log(insert(createIntervals([[6,9]]), createInterval([1,5])));